//
// Created by 86178 on 2025-04-08.
//

#ifndef DATASTRUCT_CODE_SEQLIST_H
#define DATASTRUCT_CODE_SEQLIST_H


class SeqList {
public:
// 构造与析构
    SeqList();                      // 默认构造函数
    SeqList(int capacity);          // 带容量的构造函数
    ~SeqList();                     // 析构函数

    // 基本操作
    /**
     * 在指定位置插入元素
     * @param pos 位置，从 1 开始，比如第1个位置就是下标为 0 的位置，下面其他函数同理
     * @param val 要插入的值
     * @return
     */
    bool Insert(int pos, int val);

    bool Delete(int pos);           // 删除指定位置的元素
    int Get(int pos) const;         // 获取指定位置的元素值
    bool Set(int pos, int val);     // 修改指定位置的元素值
    bool PushBack(int val);         // 向后插入元素

    // 查询与判断
    int Find(int val) const;        // 查找元素，返回其位置，找不到返回 -1
    bool IsEmpty() const;           // 判断是否为空
    bool IsFull() const;            // 判断是否已满

    // 辅助功能
    int Length() const;             // 返回当前顺序表长度
    void Clear();                   // 清空顺序表
    void Print() const;             // 打印顺序表所有元素

private:
    int len_;        // 顺序表当前长度
    int *data_;      // 存储数据
    int capacity_;   // 当前顺序表的最大容量
};


#endif //DATASTRUCT_CODE_SEQLIST_H
